package com.itheima.dubbo.interfaces;


import com.itheima.commons.model.domain.lastYear;
import com.itheima.commons.model.domain.thisYear;

import java.util.Date;
import java.util.List;


public interface CountInfoApi {
    /**
     * 累计用户
     * @return
     */
    Integer cumulativeUsers();

    /**
     * 过去30天活跃用户
     * @param start 开始时间
     * @param end   结束时间
     * @return
     */
    Integer activePassMonth(String start,String end);

    /**
     * 过去7天活跃用户
     * @param start 开始时间
     * @param end   结束时间
     * @return
     */
    Integer activePassWeek(String start,String end);

        /**
     * 今日新增用户(通用,可以查询一个时间段内的新增用户数量)
     * @param
     * @param
     * @return
     */
    Integer newUsersToday(Date beginOfDay, Date endOfDay);

    /**
     * 今日登录次数
     * @param start
     * @param end
     * @return
     */
    Integer loginTimesToday(Date start,Date end);

    /**
     * 今日活跃用户
     * @param start
     * @param end
     * @return
     */
    Integer activeUsersToday(Date start,Date end);

    /**
     * 昨日活跃用户
     * @param start
     * @param end
     * @return
     */
    Integer activeUsersYesterday(Date start,Date end);

    /**
     *  查询一段时间内的新增用户 按天分组(返回今年的对象)
     * @param startDate
     * @param endDate
     */
    List<thisYear> queryEveryNewlyThisYear(String startDate, String endDate);

    /**
     *  查询一段时间内的新增用户 按天分组(返回去年的对象)
     * @param startDate
     * @param endDate
     */
    List<lastYear> queryEveryNewlyLastYear(String startDate, String endDate);

    /**
     * 查询一段时间内的活跃用户 按天分组(返回的结果是今年的对象)
     * @param startDate
     * @param endDate
     * @return
     */
    List<thisYear> queryEveryActiveThisYear(String startDate, String endDate);
    /**
     * 查询一段时间内的活跃用户 按天分组(返回的结果是去年的对象)
     * @param startDate
     * @param endDate
     * @return
     */
    List<lastYear> queryEveryActiveLastYear(String startDate, String endDate);

    /**
     * 查询昨天注册新增 次日登录的用户数
     * @param todayStart 今天开始时间
     * @param todayEnd 今天结束时间
     * @param yesterdayStart 昨天开始时间
     * @param yesterdayEnd  昨天结束时间
     * @return
     */
    Integer queryActiveWithYesterdayNewly(Date todayStart,Date todayEnd,Date yesterdayStart,Date yesterdayEnd);
    /**
     * 查询新增数量
     * @param start 开始时间
     * @param end   结束时间
     * @return
     */
    Integer queryAddCount(String start, String end);
    /**
     * 查询活跃用户数量
     * @param start
     * @param end
     * @return
     */
    Integer queryActiveCount(String start, String end);
}
